package com.mf.service.utils.numericalProcedure.CalculateProcedure;

import com.mf.bo.calculateHistory.CalculateHistoryBo;
import com.mf.bo.calculateHistory.ProfitBo;
import com.mf.service.IWeekCodeHistoryService;
import com.mf.vo.StockGatherVo;

/**
 * @Author: lmf
 * @Create: 2024/6/13 21:22
 * Description:计算类
 */
public interface CalculateProcedure {

    /**
     * 对股票代码历史范围内的股票指标进行计算
     * @param stockGather 股票计算参数后的集合
     * @return 计算结果
     */
    CalculateHistoryBo calculate(StockGatherVo stockGather,CalculateProcedure calculateProcedure);

    /**
     * 盈利策略计算
     *
     * @param stockGatherVo 指标集合
     * @param i          当前检查日期下标
     * @return 是否盈利 盈利返回股票代码 否则返回null
     */
    String isBuyableDay(StockGatherVo stockGatherVo, int i);

    /**
     * 判断当天是否盈利
     *
     * @param stockGatherVo          指标集合
     * @param i                      当前检查日期下标
     * @param calculateHistoryBoList 单个代码在日期范围内成功失败的集合
     * @return 当前检查日期的盈利情况
     */
    ProfitBo getProfitBo(StockGatherVo stockGatherVo, int i, CalculateHistoryBo calculateHistoryBoList);


}
